package com.office.automate.service.def.authenticate;

import java.util.HashMap;

import com.office.automate.exception.framework.FrontierVisibleException;
import com.office.automate.model.authenticate.ChangePassword;
import com.office.automate.model.authenticate.UserAuthenticator;

/**
 * 
 * @author Dasan.Weerarathne
 *
 */
public interface SystemLoginAuthenticationService {

	/**
	 * 
	 * @param anUserAuthenticator
	 * @return
	 * @throws FrontierVisibleException 
	 */
	public HashMap<String, FrontierVisibleException> validateFieldData(UserAuthenticator anUserAuthenticator) throws FrontierVisibleException;

	/**
	 * 
	 * @param anUserAuthenticator
	 * @return
	 * @throws FrontierVisibleException 
	 */
	public void validateCredentials(UserAuthenticator anUserAuthenticator) throws FrontierVisibleException;

	/**
	 * 
	 * @return
	 * @throws FrontierVisibleException 
	 */
	public UserAuthenticator getSuccessfulAuthenticatedDetails() throws FrontierVisibleException;

	/**
	 * 
	 * @param changePassword
	 * @return
	 * @throws FrontierVisibleException
	 */
	public HashMap<String, FrontierVisibleException> validateChangePasswordDetails(ChangePassword changePassword) throws FrontierVisibleException;

	/**
	 * 
	 * @param changePassword
	 * @throws FrontierVisibleException
	 */
	public void changePassword(ChangePassword changePassword) throws FrontierVisibleException;
}
